SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I've been spending the last few days studying sharepoint and plan to work with it for a long time - but I've only just heard the word CAML mentioned and seen it's querying in action, is it something all sharepoint developers should know?

share|improve this question

closed as not constructive by Kit Menke Apr 18 '12 at 15:02

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

Closed.. this is definitely soliciting opinions and it will depend on what you plan to do. – Kit Menke Apr 18 '12 at 15:04
However... as a SharePoint developer you definitely need to know CAML. :P – Kit Menke Apr 18 '12 at 15:35
Well, if that's only your opinion - I take it with a pinch of salt :p – JᴀʏMᴇᴇ Apr 19 '12 at 7:52
up vote 2 down vote accepted

CAML is 100% Necesary. LINQ does not meet expectations in all scenarios. When you use SPMetal by default, you wont have access to: Created Date, Created by Modified Date, Modified by Metadata Columns People picker columns

You can configure spmetal with a .xml configuration file but I did not succed with that, so since there I never use linq again, instead of helping, it made things harder to do.

share|improve this answer
I don't know what SPMetal is yet but I'll learn CAML, it seems necessary. +1. – JᴀʏMᴇᴇ Apr 18 '12 at 14:28

It's to understand the idea of CAML as @Alexander wrote. For querying data you can use third party solutions like CAML.NET and Camlex to generate CAML. It will help to write better code.

share|improve this answer

Yes. You should definitely at least be familiar with CAML. IMHO it's easier to use than LINQ, but both achieve similar things.

share|improve this answer
CAML doesn't provide true operations for grouping, count, average and so on. LINQ provides. But in SP reality LINQ is built on CAML thus it does these operations memory. – Yuri Leontyev Apr 18 '12 at 14:20
I didn't realise it was a case of CAML vs. LINQ to be honest. I'll learn CAML because at the moment I know nothing about it. – JᴀʏMᴇᴇ Apr 18 '12 at 14:28

YES, because

CAML can be used to do the following:

  1. Provide schema definition to the Web site provisioning system about how the site looks and acts.
  2. Define views and forms for data and page rendering or execution.
  3. Act as a rendering language that performs functions in the DLL like pulling a value from a particular field.
  4. Provide batch functionality for posting multiple commands to the server using protocol.

Why would you use CAML as opposed to just using Microsoft FrontPage® or other editing tools?

  1. To make universal changes, such as adding a new logo to the main pages of every site you create.
  2. To define a content type, such as for adding Flash movies to the SharePoint team Web site.
  3. It provides the ultimate in customization and flexibility; manipulating CAML allows you total control over the site provisioning system, for instance, when creating a list or adding a view.

Read this post to understand what is caml and why do you need to use it.

share|improve this answer
I didn't understand any of the points you have listed in support of CAML, I'm that new to sharepoint. I'm sure one day I'll look back on your answer and understand more clearly but for now all I know is I need to learn CAML, that'll do me. Thanks, +1. – JᴀʏMᴇᴇ Apr 18 '12 at 14:29

Not the answer you're looking for? Browse other questions tagged or ask your own question.